package com.seari.custody.service;

import com.seari.custody.bean.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;


public interface TechnicalAdviceService {

    /**
     * 技审意见生成——返回生成状态
     * @param map
     * @return
     * @throws Exception
     */
    Map<String, Object>  technicalReviewcreate(Map<String, String> map) throws Exception;

    /**
     * 技审意见生成——许可技审意见生成逻辑
     */
    void  technicalRevieLogic(Map<String, String> map) throws Exception;

    /**
     * 技审意见生成——技审列表展示
     * @param map
     * @return
     */
    List<TemplateWord> selectAgenda(Map<String, String> map) throws Exception;


    /**
     * 技审意见生成———征询技审意见生成逻辑
     */
    void selectConsult(Map<String, String> map) throws Exception;



    Integer saverOverview(TechnicalAdvice mf);



    /**
     * 读取word信息
     * @param file
     * @return
     */
    TechnicalFile getServieFile(TechnicalFile file);







    /**
     * 技审意见列表
     * @return 返回列表
     */
    List<TechnicalType> technicalType();

    /**
     *
     * @param map 实体类的数据
     * @return 返回列表
     */
    List<TemplateWord> technicalListed(Map<String, String> map);

    /**
     *技审意见列表- 征询类
     * @param map 实体类的数据
     * @return 返回列表
     */
    List<TemplateWord> consultList(Map<String, String> map);



    /**
     * 返回退回信息
     * @param map
     * @return
     */
    List<TemplateWord> technicalbsBackspacing(Map<String, String> map );




    /**
     * 技审草稿上传——上传草稿文件
     */
    Map<String, String> uploadstatus(MultipartFile files,String uuid,String reviewType) throws Exception;



    /**
     *最新技审word文件上传
     * @param tw  需要存入的实体类字段
     * @return
     */
    Integer adviceUpload(TechnicalAdvice tw);

    /**
     * 技审补充附件文件上传
     * @param ta  上传的实体类信息
     * @return
     */
    Integer accessoryupload(TechnicalAccessory ta);

    /**
     * 根据id查看技审的详细信息
     * @param ta
     * @return
     */
    List<TemplateWord> templatId(TemplateWord ta);


    /**
     * 技审文件删除
     */
    public Integer  technicaldelect(String ta);

    /**
     * 通过项目ID查询项目附件信息
     * @param uuid
     * @return
     * @throws Exception
     */
    public List<TechnicalAccessory> getTechnicalAccessoryListByProjectUuid(String uuid) throws Exception;


    /**
     * 根据uuid得出技审生出模板个数
     * @param fileuuid
     * @return
     */
    Integer technicalnum(String fileuuid);

    /**
     * 删除接口
     */
    void templatdelect(Map<String, String> map) throws Exception;

    /**
     * 专项保护方案删除
     * @param no
     * @return
     */
    Integer  specialdelect(String no);


    /**
     * 获取最新生成的技审类型
     * @param file_uuid
     * @return
     */
    String reviewopinion(String file_uuid);

    /**
     * 获取获取numtext最大的值
     * @param file_uuid
     * @return
     */
    String numtextSum() throws Exception;




    /**
     * 获取技审和专项保护方案的列表
     * @param technicalList
     * @return
     */
    List<TechnicalList> technicalzxfalist(String fileUuid);


    /**
     * 获取专项保护方案的所属数据
     * @param no
     * @return
     */
    List<Technicalzxlist> technicalzxfazxfalist(String no);

    /**
     * 获取工程信息uuid
     * @param uuid
     * @return
     */
    String engineeringLacerationStatus(String uuid);

    /**
     * 变更工程信息流程状态
     * @param flowstatus
     * @param uuid
     * @return
     */
    long updateEngineeringLacerationStatus(String flowstatus,String uuid);

    /**
     * 从档案系统中获取word文档
     * 判断文档中的word是否有图片
     */
    Integer wordIncludePic(MultipartFile files,String fileType) throws Exception;

    /**
     * 更新技审生成记录接口
     * @param map
     * @return
     * @throws Exception
     */
    Integer updateflow(Map<String, String> map) throws Exception;

    /**
     *变更技审流程状态
     * 1、待处理：没有意见生成时
     * 2、信息概况已退回待接收：我们退回给报审（工程信息概况）
     * 3、处理中：没有草稿上传
     * 4、已发送：草稿上传成功、专项保护方案生成ok，发送至报审
     * 5、报审草稿被退回待处理：报审退回给我们（技审草稿）
     * 6、已完结
     */
    Map<String, String> updateFeedback(Map<String, String> map) throws Exception;


    /**
     * 获取技审记录
     * @param paramMap
     * @return
     */
    Map<String, String> serverQueryLine(Map<String, String> paramMap);


    /**
     * 获取最新技审类型、管线、管线内容数据
     */
    Map<String, String> opinionPipeline(Map<String, String> paramMap);

    /**
     * 获取工程的详细信息
     * @param map
     * @return  工程信息详细信息
     */
    Map<String, Object> engineeringInformation(Map<String, String> map);

    /**
     * 历史记录变更
     * @param technicalHistory
     * @return
     * @throws Exception
     */
    Integer serverTechnicalHistory(TechnicalHistory technicalHistory);


    /**
     * 判断是否有技审意见、专项保护方案
     */
    Map<String, String> navigationBartechAudit(String uuid);

    /**
     * 待办统计
     */
    Map<String, Object> queryBacklog(Map<String, String> map) throws Exception;


}
